package common

// Protocol 协议接口 - 策略模式
type Protocol interface {
	// GetType 获取协议类型
	GetType() ProtocolType
	
	// Marshal 序列化为字节数组
	Marshal() ([]byte, error)
	
	// Unmarshal 从字节数组反序列化
	Unmarshal(data []byte) error
	
	// Validate 验证协议参数
	Validate() error
	
	// String 返回协议的字符串表示
	String() string
	
	// SetSequence 设置序列号
	SetSequence(seq uint16)
	
	// GetSequence 获取序列号
	GetSequence() uint16
}

// ProtocolBuilder 协议构建器接口 - 建造者模式
type ProtocolBuilder interface {
	// Build 构建协议实例
	Build() (Protocol, error)
	
	// Reset 重置构建器
	Reset() ProtocolBuilder
}

// ProtocolFactory 协议工厂接口 - 工厂模式
type ProtocolFactory interface {
	// CreateProtocol 创建协议实例
	CreateProtocol(protocolType ProtocolType) (Protocol, error)
	
	// CreateBuilder 创建协议构建器
	CreateBuilder(protocolType ProtocolType) (ProtocolBuilder, error)
	
	// GetSupportedTypes 获取支持的协议类型
	GetSupportedTypes() []ProtocolType
}